0. Load data

Ta sẽ kiểm tra các thông tin cơ bản trong các dataframe vừa được load lên ở trên

a. Playlist dataframe

Ý nghĩa các trường trong playlist dataframe

Tên cột Ý nghĩa
playlist_id Giá trị ID unique ứng với playlist
playlist_name Tên của playlist
description Chuỗi mô tả playlist
num_tracks Số lượng bài hát có trong playlist
num_followers Số người theo dõi playlist

Nhận xét: ta thấy tên playlists bị trùng nhau khá nhiều, thoạt nhìn có vẻ dữ liệu thu được bị nhiễu. Tuy nhiên, nếu để ý thì ID, num_tracks và num_followers của chúng không giống nhau, nên những playlist trùng tên này là những playlist khác nhau.

Nhận xét: dễ dàng nhận thấy trong tập các playlist, có những playlist không chứa bài hát nào cả, ta sẽ xem đó là những playlist nào

Khá ngạc nhiên khi những playlist không có track nào nhưng vẫn có số lượt follower đáng kể!

Nhận xét: ta thấy tỉ lệ missing của trường description khá lớn, điều này cũng dễ hiểu vì đây chỉ là trường mô tả playlist, thường bị bỏ qua khi tạo một playlist mới. Ta sẽ thay thế các vị trí bị thiếu bằng string 'None'.

b. Track dataframe

Ý nghĩa của các trường trong track dataframe:

Tên cột Ý nghĩa
track_id Unique ID của bài hát
track_name Tên của bài hát
playlist_id ID của playlist (ở phần a.) chứa bài hát
playlist_name Tên của playlist ứng với playlist_id
artist_ids IDs của các nghệ sỹ trình diễn bài hát
artist_names Tên của các nghệ sỹ trình diễn bài hát
album_id ID của album chứa bài hát
album_name Tên của album ứng với album_id
track_duration_ms Độ dài của bài hát (ms)

Nhận xét: ta thấy có 2 trường album_nametrack_name có những dòng bị thiếu dữ liệu (chiếm tỉ lệ rất nhỏ). Cả 2 trường này đều là thông tin về tên bài hát/album nên cũng không quá quan trọng do chúng ta sẽ chủ yếu sử dụng các thông tin về âm thanh của bài hát để giải quyết bài toán. Ta sẽ thay các giá trị bị thiếu bằng 'None'.

c. Audio feature dataframe

Ý nghĩa của các trường trong audio track dataframe:

Tên cột Ý nghĩa
id ID của bài hát
danceability Mô tả bài hát có phù hợp để nhảy hay không dựa trên sự kết hợp, độ mạnh yếu của nhịp độ, nhịp điệu bài hát, có giá trị từ 0.0 - 1.0
energy Độ đo thể hiện tính chất năng lượng của bài hát thông qua cường độ. Thông thường một bài hát energetic sẽ nhanh, ồn ào, có giá trị từ 0.0 - 1.0
key Cao độ trung bình của hát, giá trị là số nguyên, tính theo chuẩn Pitch Class Notation, nếu không có cao độ giá trị là -1
loudness Độ to trung bình của bài hát (tính theo đơn vị dB), giá trị thường rơi vào khoảng -60.0 - 0.0 dB
mode Biểu thị thể thức (chính hoặc phụ) của một bản nhạc, loại âm hưởng mà nội dung du dương của nó được bắt nguồn. Chỉ bao gồm 2 giá trị là 1 (chính) và 0 (phụ)
speechiness Xác suất thể hiện có sự hiện diện của tiếng nói (khác với tiếng hát) trong bài hát hay không. Có giá trị trong khoảng 0.0 - 1.0, giá trị càng cao thì đây khả năng cao là bài diễn thuyết, sách nói,...
acousticness Cường độ Acoustic của bài hát hay nói cách khác là xác suất bài hát này có tính chất acoustic, có giá trị từ 0.0 - 1.0
instrumentalness Độ đo thể hiện tính instrumental (không lời) của bài hát, có giá trị trong khoảng 0.0 - 1.0, giá trị càng cao thì càng ít giọng hát trong bài hát
liveness Độ đo thể hiện tính live (nhạc sống, có sự hiện diện của khán giả trong lúc thu âm) của bài hát, có giá trị trong khoảng 0.0 - 1.0
valence Biểu thị tính tích cực của bài hát, giá trị càng cao thì bài hát càng có tính chất tích cực (vui, phấn khởi), càng thấp thì bài hát càng buồn
tempo Nhịp độ trung bình của bài hát tính theo nhịp mỗi phút (BPM)
analysis_url URL chứa thông tin phân tích chi tiết audio của bài hát
time_signature Số chỉ nhịp của bài
available_markets Các quốc gia có thể nghe bài hát này
popularity Mức độ phổ biến, yêu thích của bài (từ 0-100)

d. Artist dataframe

Ý nghĩa của các trường trong dataframe:

Tên cột Ý nghĩa
id ID của nghệ sĩ
name Tên của nghệ sĩ
popularity Mức độ nổi tiếng/yêu thích của nghệ sĩ
genres Thể loại nhạc của artist
num_followers Số người theo dõi
monthly_listeners Số người nghe mỗi tháng

e. Merge các dataframes lại với nhau

Tạm thời ta sẽ merge các dataframe trên lại với nhau, trừ dataframe artist vì:

1. Kiểm tra thông tin DataFrame thu thập được.

2. Phân tích và khám phá dữ liệu (EDA)

Nhóm câu hỏi 1: Liên quan đến playlist.

Câu hỏi 1: Số lượng bài hát và lượt theo dõi của mỗi playlist phân bố như thế nào?

Nhận xét:

Câu hỏi 2: Hãy liệt kê các tên playlist có số lượng người theo dõi nhiều nhất (thông tin này sẽ có lợi cho quá trình đề xuất bài hát)

Nhận xét:

Câu hỏi 3: Hãy liệt kê các tên playlist có số lượng tracks nhiều nhất.

Nhận xét: playlist có nhiều bài hát nhất là The Critics Choice 2012, có thể đây là playlist tập hợp những bài hát được lựa chọn để nghe trong năm 2012. Dựa vào description của các playlists, ta có thể thấy những playlist chứa nhiều tracks nhất là tập hợp những audio để học một ngôn ngữ nào đó (Italian, Chinese, German, ...) hoặc là tập hợp những công trình/tác phẩm của một tác giả nào đó, ...

Câu hỏi 4: Số lượng tracks của 20 playlist hot nhất

Nhận xét: Dựa vào bảng và biểu đồ trên, ta thấy hầu hết các top playlists có số bài hát nhỏ hơn 100 bài. Những playlist có nhiều bài hát hơn cũng chỉ có nhiều nhất khoảng 300 bài hát. Điều này phần nào thể hiện xu thế những playlist phổ biến có số lượng track không quá nhiều.

Câu hỏi 5: Các từ được sử dụng nhiều nhất để đặt tên playlist và mô tả playlist

Nhận xét: Dễ dàng nhận thấy những từ phổ biến nhất trong tên bài hát là những từ chỉ thể loại nhạc như Rock, Pop, Metal, Classical, ... hay những từ thể hiện mục đích của playlist như Happy Birthday, Pride, Party, Work, Chill, ... Những từ này được chọn vì nó thể hiện rõ ràng theme của playlist, dễ hình dung nội dung playlist khi đọc.

Nhận xét: Khác với những từ trong tên playlist, những từ phổ biến nhất để mô tả playlist là những từ mô tả tập hợp, bài hát như collection, playlist, track, music, song và những từ chỉ thể loại như cover, rock, pop, classic, ...

Câu hỏi 7: Giá trị trung bình các thuộc tính số (numeric features) của các playlists phân bố như thế nào?

Nhận xét: Dựa vào các biểu đồ trên, ta nhận thấy distribution giá trị trung bình các thuộc tính danceability, energy, key, loudness, mode, acousticness, liveness, valence, tempo, popularity của các playlists phân bố rải rác (không quá tập trung) trong miền giá trị tương ứng và có độ lệch chuẩn (thể hiện qua box plot ở mỗi histogram) không quá nhỏ. Điều này cho thấy có sự khác biệt ở các thuộc tính trên giữa các playlists, có thể sử dụng chúng để dự đoán những bài hát liên quan đến một tập các bài hát cho trước.

Nhóm câu hỏi 2: Liên quan đến tác giả bài hát (artist) và album (album)

Câu hỏi 1: Hãy liệt kê các nghệ sĩ (artist) và album có số lượng tracks nhiều nhất.

Nhận xét: Những nghệ sĩ có nhiều bài hát nhất bao gồm cả những nghệ sĩ trẻ (Talor Swift, Ed Sheeran, ...), những nghệ sĩ lâu năm (The Beatles, Johnny Cash), công ty phát hành sách (Penton Overseas), nhà soạn nhạc (Beethoven). Đây đều là những tên tuổi hàng đầu được nhiều người biết đến.

Câu hỏi 2: Kiểm tra mức độ phổ biến/nổi tiếng của các nghệ sĩ

Nhận xét: ta thấy distribution mức độ nổi tiếng/yêu thích của các nghệ sĩ có hình dạng gần chuẩn.

Câu hỏi 3: Genre phổ biến mà các nghệ sĩ theo đuổi

Nhận xét: ta có thể thấy những genre phổ biến nhất là những (biến thể) của các thể loại pop, rock, dance, rap, ...

Nhóm câu hỏi 3: Liên quan đến các bài hát.

Câu hỏi 0: Bài hát nào xuất hiện trong nhiều playlist nhất?

Nhận xét: những bài hát ở trên đều là những bài hát mớiphổ biến, đến từ những nghệ sĩ nổi tiếng. Có thể đây là lý do chúng được thêm vào nhiều playlists khác nhau.

Câu hỏi 1: Thời lượng của các bài hát được phân bố như thế nào?

Nhận xét: Ta thấy hầu hết các bài hát đều có độ dài dưới 250s (khoảng 4p)

Câu hỏi 2: Các thuộc tính liên quan đến tâm trạng bài hát (Danceability, Valence, Energy, Tempo) được phân bố như thế nào?

Nhận xét:

Câu hỏi 3: Các thuộc tính liên quan đến đặc điểm bài hát (Loudness, Speechiness, Instrumentalness) được phân bố như thế nào?

Nhận xét:

Câu hỏi 4: Các thuộc tính liên quan đến nội dung bài hát (Liveness, Acousticness) được phân bố như thế nào?

Nhận xét:

Câu hỏi 5: Mức độ phổ biến/yêu thích của các bài hát phân bố ra sao

Nhận xét: Dựa vào histogram trên, ta thấy mức độ yêu thích của các track có phân bố dạng hình chuông. Tuy nhiên, số lượng bài có độ yêu thích bằng 0 chiếm số lượng khá lớn. Nguyên nhân có thể do đây là những bài hát mới, chưa có đủ thông tin để đánh giá mức độ yêu thích, phổ biến của chúng.

Câu hỏi 6: Availability của các bài hát ở các quốc gia

Tiếp theo, ta sẽ xem ở quốc qua nào thì ta có thể nghe được nhiều bài hát nhất

Nhận xét: ta thấy số lượng bài hát ở các quốc gia khác nhau trên thế giới không chênh lệch quá nhiều. Lý do là vì hầu hết các bài hát khi được đưa ra thị trường đều muốn đến được với nhiều khán giả nhất có thể.

Câu hỏi 7: Số lượng quốc gia có thể nghe được của mỗi bài hát

Nhận xét: ta thấy hầu hết các bài hát đều available tại toàn bộ các quốc gia (có tất cả 92 quốc gia trong tập dữ liệu), hoặc chỉ available tại 1 quốc gia nhất định.

Câu hỏi 8: Tương quan giữa các thuộc tính trên (Danceability, Valence, Energy, Tempo, Loudness, Speechiness, Instrumentalness, Liveness, Acousticness, Duration, Popularity) là như thế nào?

Nhận xét: dựa vào heatmap trên, ta có thể đưa ra một vài nhận xét về tương quan giữa các biến: